import store from '@/store'

/**
 * 字符权限校验
 * 在某些情况下，它是不适合使用v-has-permission自定义指令，如元素标签组件，只能通过手动设置v-if。 可以使用全局权限判断函数，用法和指令 v-hasPermi 类似。
 *
 * 使用方法：
 * <el-tabs>
 *    <el-tab-pane v-if="checkPermission(['system:user:add', 'system:user:edit'])" label="参数管理" name="menu">参数管理</el-tab-pane>
 * </el-tabs>
 *
 * <script>
 *  import { checkPermission } from "@/utils/checkPermission"; // 权限判断函数
 *  export default{
 *    methods: {
 *      checkPermission
 *    }
 *  }
 * </script>
 *
 * @param {Array} value 校验值
 * @returns {Boolean}
 */
export function checkPermission(value) {
  if (value && value instanceof Array && value.length > 0) {
    const permissions = store.getters && store.getters.permissions
    const permissionDatas = value
    const all_permission = "*:*:*";

    const hasPermission = permissions.some(permission => {
      return all_permission === permission || permissionDatas.includes(permission)
    })

    if (!hasPermission) {
      return false
    }
    return true
  } else {
    console.error(`need permissions! Like checkPermission="['system:user:add','system:user:edit']"`)
    return false
  }
}
